<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>需求</title>
<link media="all" rel="stylesheet" type="text/css" href="styles/03e73060321a0a848018724a6c83de7f-theme-base.css" />
<link media="all" rel="stylesheet" type="text/css" href="styles/03e73060321a0a848018724a6c83de7f-theme-medium.css" />

 </head>
 <body class="docs"><div class="navbar navbar-fixed-top">
  <div class="navbar-inner clearfix">
    <ul class="nav" style="width: 100%">
      <li style="float: left;"><a href="mysqli.setup.html">« 安装/配置</a></li>
      <li style="float: right;"><a href="mysqli.installation.html">安装 »</a></li>
    </ul>
  </div>
</div>
<div id="breadcrumbs" class="clearfix">
  <ul class="breadcrumbs-container">
    <li><a href="index.html">PHP Manual</a></li>
    <li><a href="mysqli.setup.html">安装/配置</a></li>
    <li>需求</li>
  </ul>
</div>
<div id="layout">
  <div id="layout-content"><div id="mysqli.requirements" class="section">
  <h2 class="title">需求</h2>
  <p class="para">
   要使用 mysqli 相关的函数，
   你必须以启用 mysqli 扩展的方式编译 PHP。
  </p>
  <p class="para">
    <em class="emphasis">MySQL 8</em>
  </p>
  
  <p class="para">
   使用 PHP 7.1.16 之前的版本或者 PHP 7.2（PHP 7.2.4 之前的版本），
   需要将 MySQL 服务器的默认密码插件设置为：<em class="emphasis">mysql_native_password</em>。
   否则，当你连接的时候就会看到类似这样的错误：
   <em class="emphasis">The server requested authentication method unknown to the client [caching_sha2_password]</em>。
   即使你未使用 <em class="emphasis">caching_sha2_password</em> 也会这样。
  </p>
  <p class="para">
   发生这种错误的原因是，MySQL 8 服务器默认会使用 caching_sha2_password 扩展，
   老版本的 PHP 驱动（mysqlnd）无法识别这个扩展。
   所以需要在 MySQL 的配置文件 <var class="filename">my.cnf</var> 中，设置
   <code class="literal">default_authentication_plugin=mysql_native_password</code>。
   在后续的 PHP 发行版本中，会提供对 MySQL <em class="emphasis">caching_sha2_password</em> 扩展的支持。
   目前只有 <a href="book.mysql-xdevapi.html" class="link">mysql_xdevapi</a> 扩展是
   支持 MySQL 的 caching_sha2_password 扩展的。
  </p>
 </div></div></div></body></html>